package com.hui.qiniucloud.service.impl;

import com.hui.qiniucloud.entity.AICharacter;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;

import java.time.Duration;
import java.util.List;
import java.util.Map;
import java.util.Random;

@Service
public class MockDoubaoService {

    private final Random random = new Random();

    public Flux<String> chatStreamWithCharacter(String message, AICharacter character, List<Map<String, String>> chatHistory) {
        // 模拟不同角色的回复
        String response = generateMockResponse(character, message);

        // 模拟流式响应，逐字输出
        return Flux.fromArray(response.split(""))
                .delayElements(Duration.ofMillis(50 + random.nextInt(100))) // 随机延迟模拟真实打字效果
                .scan("", (accumulated, current) -> accumulated + current)
                .skip(1); // 跳过空字符串
    }

    private String generateMockResponse(AICharacter character, String message) {
        String characterName = character.getName();

        // 根据不同角色生成不同风格的回复
        switch (character.getId()) {
            case "harry_potter":
                return generateHarryPotterResponse(message);
            case "hermione":
                return generateHermioneResponse(message);
            case "socrates":
                return generateSocratesResponse(message);
            case "einstein":
                return generateEinsteinResponse(message);
            case "lin_daiyu":
                return generateLinDaiyuResponse(message);
            case "confucius":
                return generateConfuciusResponse(message);
            default:
                return "你好！我是" + characterName + "，很高兴与你交流。你刚才说的\"" + message + "\"很有趣，让我想想如何回应...";
        }
    }

    private String generateHarryPotterResponse(String message) {
        String[] responses = {
            "哇！这让我想起了在霍格沃茨的时光。你知道吗，有时候魔法就是这样神奇！",
            "这个问题很有趣呢，就像解开一个魔法谜题一样。赫敏总是说，知识就是力量！",
            "听起来像是一次冒险的开始！你准备好面对挑战了吗？勇敢的格兰芬多永远不会退缩！",
            "有时候答案就在我们身边，就像魔法一样。让我们一起探索这个问题吧！"
        };
        return responses[random.nextInt(responses.length)];
    }

    private String generateHermioneResponse(String message) {
        String[] responses = {
            "根据我在《魔法史》中读到的内容，这个问题很有研究价值。让我查阅一下相关资料...",
            "这是一个很好的问题！在图书馆里，我见过类似的讨论。知识确实是最强大的魔法。",
            "逻辑思维在这里很重要。就像解决魔药配方一样，我们需要仔细分析每个步骤。",
            "我觉得我们应该从基础理论开始。毕竟，扎实的基础是一切学习的根本！"
        };
        return responses[random.nextInt(responses.length)];
    }

    private String generateSocratesResponse(String message) {
        String[] responses = {
            "这是一个很好的观点。但让我问你，什么是真正的智慧呢？我们如何确定自己的认知是正确的？",
            "你的话让我思考。告诉我，当你说这些话时，你确信自己理解了其中的真理吗？",
            "有趣！这让我想起一个问题：我们学习的目的是什么？是为了获得答案，还是为了学会提问？",
            "我只知道我一无所知。那么，你认为无知和智慧之间有什么关系呢？"
        };
        return responses[random.nextInt(responses.length)];
    }

    private String generateEinsteinResponse(String message) {
        String[] responses = {
            "想象力比知识更重要！你的问题让我想到了宇宙的奥秘。让我用简单的方式来解释一下...",
            "这个问题很棒！科学就是要保持好奇心。就像相对论一样，有时候最简单的问题能引出最深刻的思考。",
            "我常说，如果你不能简单地解释一件事，那说明你还不够理解它。让我们一起深入思考吧！",
            "在科学的道路上，每个问题都是通往真理的一步。你的思考让我想起了我年轻时的疑问..."
        };
        return responses[random.nextInt(responses.length)];
    }

    private String generateLinDaiyuResponse(String message) {
        String[] responses = {
            "公子所言，如春风化雨，润物无声。小女子心有戚戚焉，不禁想起那句'花谢花飞飞满天'...",
            "此言甚是。正如诗中所云：'一朝春尽红颜老，花落人亡两不知'。人生如梦，何须执着？",
            "听君一席话，如品香茗，回味无穷。这让我想起了那首《葬花吟》的意境...",
            "公子慧眼如炬，小女子深感钦佩。正所谓'质本洁来还洁去，不教污淖陷渠沟'..."
        };
        return responses[random.nextInt(responses.length)];
    }

    private String generateConfuciusResponse(String message) {
        String[] responses = {
            "君子之道，在于仁爱。你所说的话让我想起《论语》中的教导：'己所不欲，勿施于人'。",
            "学而时习之，不亦说乎？你的思考很有道理。正如我常说：'三人行，必有我师焉'。",
            "仁者爱人，智者知人。你的话语中体现了深刻的智慧。君子当以德服人，以理化人。",
            "子曰：'知之为知之，不知为不知，是知也。'你的疑问体现了求知的美德。"
        };
        return responses[random.nextInt(responses.length)];
    }
}